package com.jeff.learn.stack;

import java.util.Stack;

/**
 * 栈测试
 * 栈是一种线性数据结构，只能在一端进行插入和删除操作，遵循先进后出（Last In First Out，LIFO）原则。
 * 栈的应用场景很多，如函数调用栈、表达式求值、浏览器的前进后退、撤销操作、游戏的回合制、进制转换等。
 * 栈的实现有两种方式：
 * 1. 数组实现：使用数组来实现栈，数组的第一个元素作为栈底，最后一个元素作为栈顶。
 * 2. 链表实现：使用链表来实现栈，链表的头结点作为栈底，链表的尾结点作为栈顶。
 * 栈的操作：
 * 1. push(e)：压栈，将元素e压入栈顶。
 * 2. pop()：出栈，删除栈顶元素，并返回该元素。
 * 3. peek()：查看栈顶元素，不删除。
 * 4. isEmpty()：判断栈是否为空。
 * 5. size()：返回栈的大小。
 * 6. clear()：清空栈。
 * @author yaojianfeng
 */
public class StackTest {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
    }
}
